import axios from 'axios'
import { getToken } from "~/composables/auth";
import { toast } from '~/composables/util'
import store from "~/store/index.js";

const request = axios.create({
    baseURL: '/api',  // 注意！！ 这里是全局统一加上了 '/api' 前缀，也就是说所有接口都会加上'/api'前缀在，页面里面写接口的时候就不要加 '/api'了，否则会出现2个'/api'，类似 '/api/api/user'这样的报错，切记！！！
    timeout: 5000
})

// response 拦截器
// 可以在接口响应后统一处理结果
// 添加请求拦截器
request.interceptors.request.use(function (config) {

    // 往header头自动添加token
    const token = getToken()
    if(token){
        config.headers["token"] = token
    }

    return config;
}, function (error) {
    const msg = error.response.data.msg || "请求失败"

    if(msg == "无token，请重新登录"){
        store.dispatch("logout").finally(()=>location.reload())
    }

    toast(msg,"error")
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response.data;
}, function (error) {
    // 对响应错误做点什么
    toast("请求失败", 'error')
    return Promise.reject(error);
})



export default request
